/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.senaclem.atus.vista;

import co.edu.senaclem.logica.FuncionarioLogicaLocal;
import co.edu.senaclem.logica.PersonalLogicaLocal;
import co.edu.senaclem.logica.UsuariosLogicaLocal;
import co.edu.senaclem.modelo.Funcionario;
import co.edu.senaclem.modelo.Personal;
import java.io.IOException;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author anfeles
 */
@ManagedBean(name = "funcionarioDatosVista")
@ViewScoped
public class FuncionarioDatosVista implements Serializable {

    @EJB
    private FuncionarioLogicaLocal funcionarioLogica;

    @EJB
    private PersonalLogicaLocal personalLogica;

    @EJB
    private UsuariosLogicaLocal usuariosLogica;

    private String txtDocumento;
    private String txtNombre;
    private String txtApellido;
    private String txtTelefono;
    private String txtCorreo;
    private String txtArea;
    private String txtDependencia;

    /**
     * Creates a new instance of AprendizDatosVista
     */
    public FuncionarioDatosVista() {

    }

    public String getTxtDocumento() {
        txtDocumento = (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario");
        try {
            Funcionario funcionario = funcionarioLogica.consultarPorId(Long.parseLong(txtDocumento));
            txtNombre = funcionario.getDocumento().getNombre();
            txtApellido = funcionario.getDocumento().getApellido();
            txtTelefono = funcionario.getDocumento().getTelefono();
            txtCorreo = funcionario.getDocumento().getCorreo();
            txtArea = String.valueOf(funcionario.getArea().getNombre());
            txtDependencia = funcionario.getArea().getDependencia().getNombre();

        } catch (Exception ex) {
            Logger.getLogger(FuncionarioDatosVista.class.getName()).log(Level.SEVERE, null, ex);
        }

        return txtDocumento;
    }

    public void setTxtDocumento(String txtDocumento) {
        this.txtDocumento = txtDocumento;
    }

    public String getTxtNombre() {
        return txtNombre;
    }

    public void setTxtNombre(String txtNombre) {
        this.txtNombre = txtNombre;
    }

    public String getTxtApellido() {
        return txtApellido;
    }

    public void setTxtApellido(String txtApellido) {
        this.txtApellido = txtApellido;
    }

    public String getTxtTelefono() {
        return txtTelefono;
    }

    public void setTxtTelefono(String txtTelefono) {
        this.txtTelefono = txtTelefono;
    }

    public String getTxtCorreo() {
        return txtCorreo;
    }

    public void setTxtCorreo(String txtCorreo) {
        this.txtCorreo = txtCorreo;
    }

    public String getTxtArea() {
        return txtArea;
    }

    public void setTxtArea(String txtArea) {
        this.txtArea = txtArea;
    }

    public String getTxtDependencia() {
        return txtDependencia;
    }

    public void setTxtDependencia(String txtDependencia) {
        this.txtDependencia = txtDependencia;
    }

    public void modificar_action() {
        //System.out.println("Modificar Funcionario");
        if (usuariosLogica.validarSesion()) {
            try {

                Long docAprendiz = Long.parseLong(txtDocumento);
                //Modificar
                //solo el usuario puede modificar sus datos personales
                Personal miPersonal = new Personal();
                miPersonal.setDocumento(docAprendiz);
                miPersonal.setNombre(txtNombre);

                miPersonal.setApellido(txtApellido);
                miPersonal.setCorreo(txtCorreo);
                miPersonal.setTelefono(txtTelefono);

                personalLogica.modificar(miPersonal);

                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Mensaje: ", "El Funcionario se Modificó con Exito"));
            } catch (NumberFormatException nfe) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error ", "Número de Documento Inválido"));
            } catch (Exception e) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", e.getMessage()));
            }

        } else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(FuncionarioDatosVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }

}
